home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / share / perl5 / Debconf / FrontEnd.pm < prev    next >
Text File  |  2008-10-10  |  3KB  |  173 lines

  1. #!/usr/bin/perl -w
  2. # This file was preprocessed, do not edit!
  3.  
  4.  
  5. package Debconf::FrontEnd;
  6. use strict;
  7. use Debconf::Gettext;
  8. use Debconf::Priority;
  9. use Debconf::Log ':all';
  10. use base qw(Debconf::Base);
  11.  
  12.  
  13. sub init {
  14.     my $this=shift;
  15.     
  16.     $this->elements([]);
  17.     $this->interactive('');
  18.     $this->capb('');
  19.     $this->title('');
  20.     $this->requested_title('');
  21.     $this->info(undef);
  22.     $this->need_tty(1);
  23. }
  24.  
  25.  
  26. sub elementtype {
  27.     my $this=shift;
  28.     
  29.     my $ret;
  30.     if (ref $this) {
  31.         ($ret) = ref($this) =~ m/Debconf::FrontEnd::(.*)/;
  32.     }
  33.     else {
  34.         ($ret) = $this =~ m/Debconf::FrontEnd::(.*)/;
  35.     }
  36.     return $ret;
  37. }
  38.  
  39. my %nouse;
  40.  
  41. sub _loadelementclass {
  42.     my $this=shift;
  43.     my $type=shift;
  44.     my $nodebug=shift;
  45.  
  46.     if (! UNIVERSAL::can("Debconf::Element::$type", 'new')) {
  47.         return if $nouse{$type};
  48.         eval qq{use Debconf::Element::$type};
  49.         if ($@ || ! UNIVERSAL::can("Debconf::Element::$type", 'new')) {
  50.             warn sprintf(gettext("Unable to load Debconf::Element::%s. Failed because: %s"), $type, $@) if ! $nodebug;
  51.             $nouse{$type}=1;
  52.             return;
  53.         }
  54.     }
  55. }
  56.  
  57.  
  58. sub makeelement {
  59.     my $this=shift;
  60.     my $question=shift;
  61.     my $nodebug=shift;
  62.  
  63.     my $type=$this->elementtype.'::'.ucfirst($question->type);
  64.     $type=~s/::$//; # in case the question has no type..
  65.  
  66.     $this->_loadelementclass($type, $nodebug);
  67.  
  68.     my $element="Debconf::Element::$type"->new(question => $question);
  69.     return if ! ref $element;
  70.     return $element;
  71. }
  72.  
  73.  
  74. sub add {
  75.     my $this=shift;
  76.     my $element=shift;
  77.  
  78.     foreach (@{$this->elements}) {
  79.         return if $element->question == $_->question;
  80.     }
  81.     
  82.     $element->frontend($this);
  83.     push @{$this->elements}, $element;
  84. }
  85.  
  86.  
  87. sub go {
  88.     my $this=shift;
  89.     $this->backup('');
  90.     foreach my $element (@{$this->elements}) {
  91.         $element->show;
  92.         return if $this->backup && $this->capb_backup;
  93.     }
  94.     return 1;
  95. }
  96.  
  97.  
  98. sub progress_start {
  99.     my $this=shift;
  100.     my $min=shift;
  101.     my $max=shift;
  102.     my $question=shift;
  103.  
  104.     my $type = $this->elementtype.'::Progress';
  105.     $this->_loadelementclass($type);
  106.  
  107.     my $element="Debconf::Element::$type"->new(question => $question);
  108.     unless (ref $element) {
  109.         return;
  110.     }
  111.     $element->frontend($this);
  112.     $element->progress_min($min);
  113.     $element->progress_max($max);
  114.     $element->progress_cur($min);
  115.  
  116.     $element->start;
  117.  
  118.     $this->progress_bar($element);
  119. }
  120.  
  121.  
  122. sub progress_set {
  123.     my $this=shift;
  124.     my $value=shift;
  125.  
  126.     return $this->progress_bar->set($value);
  127. }
  128.  
  129.  
  130. sub progress_step {
  131.     my $this=shift;
  132.     my $inc=shift;
  133.  
  134.     return $this->progress_set($this->progress_bar->progress_cur + $inc);
  135. }
  136.  
  137.  
  138. sub progress_info {
  139.     my $this=shift;
  140.     my $question=shift;
  141.  
  142.     return $this->progress_bar->info($question);
  143. }
  144.  
  145.  
  146. sub progress_stop {
  147.     my $this=shift;
  148.  
  149.     $this->progress_bar->stop;
  150.     $this->progress_bar(undef);
  151. }
  152.  
  153.  
  154. sub clear {
  155.     my $this=shift;
  156.     
  157.     $this->elements([]);
  158. }
  159.  
  160.  
  161. sub default_title {
  162.     my $this=shift;
  163.     
  164.     $this->title(sprintf(gettext("Configuring %s"), shift));
  165.     $this->requested_title($this->title);
  166. }
  167.  
  168.  
  169. sub shutdown {}
  170.  
  171.  
  172. 1
  173.